package com.school.service;

import com.school.entity.dto.LoginRequest;
import com.school.entity.dto.LoginResponse;

/**
 * 认证服务接口
 * 
 * @author School Development Team
 * @version 1.0.0
 * @since 2024
 */
public interface AuthService {

    /**
     * 用户登录
     * 
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    LoginResponse login(LoginRequest loginRequest);

    /**
     * 用户登出
     * 
     * @param token 访问令牌
     * @return 是否成功
     */
    boolean logout(String token);

    /**
     * 刷新令牌
     * 
     * @param refreshToken 刷新令牌
     * @return 新的登录响应
     */
    LoginResponse refreshToken(String refreshToken);

    /**
     * 验证令牌
     * 
     * @param token 访问令牌
     * @return 是否有效
     */
    boolean validateToken(String token);

    /**
     * 修改密码
     * 
     * @param userId 用户ID
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean changePassword(String userId, String oldPassword, String newPassword);

    /**
     * 重置密码
     * 
     * @param username 用户名
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean resetPassword(String username, String newPassword);

    /**
     * 锁定用户
     * 
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean lockUser(String userId);

    /**
     * 解锁用户
     * 
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean unlockUser(String userId);
}